/* 
    判断回文数, 你能不将整数转为字符串来解决这个问题吗？
    给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。
    回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。例如，121 是回文，而 123 不是。
*/
{
  /**
   * 遍历, 获取每一位数字并且拼成一个数, 然后对比先后数值是否相等
   * @param {*} num
   * @return {*}
   */
  const isPalindrome = (num) => {
    // 特殊情况：
    // 如上所述，当 x < 0 时，x 不是回文数。
    // 同样地，如果数字的最后一位是 0，为了使该数字为回文，
    // 则其第一位数字也应该是 0
    // 只有 0 满足这一属性

    if (num < 0 || (num % 10 === 0 && num !== 0)) return false;
    let tempNum = num; // 存放截取最后一位数字之后的值
    let result = 0; // 存放结果
    // console.log(tempNum, tempNum.length) //数字没有length属性
    while (tempNum) {
      result = result * 10 + (tempNum % 10);
      tempNum = ~~(tempNum / 10); // ~是按位取反运算，~~是取反两次。~~的作用是去掉小数部分
    }
    return result === num;
  };
  const num = 1234321;
  console.log(isPalindrome(num));
}
